//using System;
//using System.IO;

//namespace CodePlex.CodePlexClientLibrary
//{
//    [Command("diff", "Show differences between base copy and working copy", MaxArgs = 1, UsageSummary = "[path] [options]", UsageDescription =
//@"When passed a folder, shows the differences of all files in that folder.
//When passed a file, shows the differences for that file only.
//If path is not passed, shows the differences for the current directory.
//
//In text mode (without the /gui switch), the diff command displays universal
//diff output to the console. Multiple files are displayed sequentially.
//
//In GUI mode (with the /gui switch), the diff command uses the diff tool
//configured in the .exe.config file. If a filename is passed, that file
//is directly diffed. If a folder is passed, a window is shown with a list
//of all modified files. The user can double-click on each file in the
//list to launch the diff viewer for that file.
//
//The GUI diff tool is configured in the .exe.config file.")]
//    public class DiffCommand : InteractiveNonAuthenticatedCommand
//    {
//        bool nonRecursive;
//        bool gui = AppConfig.DiffAlwaysUsesGui;

//        [Option("gui", "use GUI diff tool instead of text-based diff", ShortName = "g")]
//        public bool Gui
//        {
//            get { return gui; }
//            set { gui = value; }
//        }

//        [Option("non-recursive", "do not recurse into subdirectories", ShortName = "n")]
//        public bool NonRecursive
//        {
//            get { return nonRecursive; }
//            set { nonRecursive = value; }
//        }

//        public override void Execute()
//        {
//            if (Gui)
//                DoGuiDiff();
//            else
//                DoTextDiff();
//        }

//        void DoGuiDiff()
//        {
//            if (NonInteractive)
//                Console.WriteLine("error: /gui and /non-interactive are mutually exclusive");
//            else if (String.IsNullOrEmpty(AppConfig.DiffTool) || String.IsNullOrEmpty(AppConfig.DiffArgs))
//                Console.WriteLine("error: to use /gui you must set DiffTool and DiffArgs in the .config file");
//            else
//            {
//                DiffGuiView view = new DiffGuiView(Engine, AppConfig.DiffTool, AppConfig.DiffArgs);

//                if (Arguments.Count == 1)
//                    view.RunFileDiff(Directory.GetCurrentDirectory(), Arguments[0]);
//                else
//                    view.RunDirectoryDiff(Directory.GetCurrentDirectory(), !NonRecursive);
//            }
//        }

//        void DoTextDiff()
//        {
//            new DiffConsoleView(Engine).Run(Directory.GetCurrentDirectory(), !NonRecursive, Arguments.Count == 0 ? "." : Arguments[0]);
//        }
//    }
//}
